import { ref, reactive } from "vue";

import { is_login } from "@/service/auth";
import { user } from "@/server/user";

// 弹窗公告
export const notice_popup = reactive({
    open: false,
    detail: {
        id: 0,
        title: "",
        createDate: "",
        content: "",
    }
});

// 公告列表
export const notice_list = reactive({
    page: 1,
    size: 10,
    list: [],
});

// 公告内容
export const notice = reactive({
    id: 0,
    title: "",
    createDate: "",
    content: "",
});

export const userInfo = reactive({
    account: "",       // 账号
    registerType: 0,   // 账号类型: { 0: 邮箱注册, 1: 手机注册 }
    balance: 0,        // 可用余额
    freeze: 0,         // 冻结金额
    unpaid: 0,         // 未支付
    authStatus: 0      // 认证状态: { 0: 未认证, 1: 待审核, 2: 已认证, 3: 审核拒绝 }
});

// 是否已经提交了认证申请
export const is_sumbit = ref(false);
// 表示用户认证状态
export const user_auth_status = ref(3);

export const userService = {
    async getNoticePopup() {
        let res = await user.getNoticePopup();
        if (res.success) {
            if (res.data.code == 200) {
                Object.assign(notice_popup, res.data.data);
            }
        }
    },
    // async getNoticeList() {
    //     let res = await user.getNoticeList(notice_list.page, notice_list.size);
    //     if (res.success) {
    //         if (res.data.code == 200) {
    //             notice_list.list = res.data.data;
    //         }
    //     }
    // },
    // async getNotice(id) {
    //     let res = await user.getNotice(id);
    //     if (res.success) {
    //         if (res.data.code == 200) {
    //             Object.assign(notice, res.data.data);
    //         }
    //     }
    // },
    async getUserInfo() {
        let res = await user.getUserInfo();
        if (res.success) {
            if (res.data.code == 200) {
                is_login.value = true;
                Object.assign(userInfo, res.data.data);
            } else {
                is_login.value = false;
            }
        } else {
            is_login.value = false;
        }
    },
    async getAuthInfo(ok, no) {
        let res = await user.getAuthInfo();
        if (res.success) {
            if (res.data.code == 200) {
                ok(res.data.data);
            } else {
                no(res);
            }
        } else {
            no(res);
        }
    },
    // 提交认证申请接口
    async authApply(data, ok, no) {
        // 构造 Formdata
        // firstName （string-名字）
        // middleName （string-中间名）
        // lastName （string-姓氏）
        // gender （int-性别 0 男、1 女）
        // country （string-国家/地区）
        // phone （string-手机号）
        // cardNumber （string-证件号）
        // front （证件照前面）
        // back （证件照背面）
        const formdata = new FormData();
        formdata.append("firstName", data.firstName);
        formdata.append("middleName", data.middleName);
        formdata.append("lastName", data.lastName);
        formdata.append("gender", data.gender);
        formdata.append("country", data.country);
        formdata.append("phone", data.phone);
        formdata.append("cardNumber", data.cardNumber);
        formdata.append("front", data.frontFileObj.file);
        formdata.append("back", data.backFileObj.file);
        // 调用 API
        let res = await user.authApply(formdata);
        if (res.success) {
            if (res.data.code == 200) {
                ok(res.data.data);
            } else {
                no(res);
            }
        } else {
            no(res);
        }
    }
};
